# 字典
# 注：字典的键：必须是课哈希类型，列表无法作为键  字典的值任意的
import random
print("-" * 50, "字典定义", "-" * 50)
print("字面量定义：", {"紫嫣": 19, "嫣然": 20, "萌萌": 21})
# 定义空字典
my_dict = {}
print("定义空字典", my_dict)
my_dict1 = {"姜婉云": 22, "南宫翎": 17}
my_dict2 = {"紫嫣": 20, "嫣然": 21, "萌萌": 18}
# zip创建字典
zip_dict = zip(my_dict1, my_dict2)
print("zip创建字典", zip_dict)
print("zip创建字典转换后才能看：", list(zip_dict))
# 使用参数创建字典
my_dict = dict(姜婉云=22, 南宫翎=17, 紫嫣=20, 嫣然=21, 萌萌=18)
print("使用参数创建字典：", my_dict)


print("-" * 50, "字典常用方法", "-" * 50)
# 新增元素
my_dict["慕容紫嫣"] = 20
print("新增元素：", my_dict)
# 更新元素
my_dict["紫嫣"] = 18
print("更新元素：", my_dict)
# 获取value，没有获取到则会抛出异常
print("根据键获取值", my_dict["紫嫣"])
# get(key)获取value,元素不存在时，会返回None，如果没有可以返回相应的提示
print("get根据键获取值", my_dict.get("紫嫣"))
print("没有找到值返回None:", my_dict.get("谭萌萌"))
print("没有可以返回相应的提示：", my_dict.get("谭萌萌", "谭萌萌不存在"))
# 获取全部key
keys = my_dict.keys()
print("获取全部的key", keys)
# 获取全部的值
values = my_dict.values()
print("获取全部的值", values)
# 转换成key-value形式
key_value = my_dict.items()
print("转换成key-value形式", key_value)
# pop删除元素，同时删除字典内数据
value = my_dict.pop("萌萌")
print("删除元素的key是萌萌，删除的值：", value)
print("删除元素：", my_dict)
value = my_dict.pop("萌萌", "萌萌不存在，如果不写默认值，返回None")
print(value)
# 随机删除
my_dict.popitem()
print("随机删除：", my_dict)
# 字典遍历
print("获取全部的键来字典遍历：", end="\t")
# 先获取全部的键
keys = my_dict.keys()
for key in keys:
    print(key, my_dict[key], end="\t")
print()
print("直接字典遍历：", end="\t")
for key1 in my_dict:
    print(key1, my_dict[key1], end="\t")
print()
# 字典的长度
print("字典的长度：", len(my_dict))
# 清空字典
my_dict.clear()
print("清空字典：", my_dict)


# 字典生成式
print("-" * 50, "字典生成式", "-" * 50)
d = {item: random.randint(1, 100) for item in range(0, 5)}
print("字典生成式：", d)

# 定义一个表格式的字典（表格式是自己取得名字，就是字典中嵌套一个字典）
my_dict = {
    "姜婉云": {
        "语文": 77,
        "数学": 66,
        "英语": 33
    },
    "南宫翎": {
        "语文": 88,
        "数学": 86,
        "英语": 55
    },
    "紫嫣": {
        "语文": 90,
        "数学": 100,
        "英语": 100
    },
    "嫣然": {
        "语文": 66,
        "数学": 88,
        "英语": 80
    },
    "谭萌萌": {
            "语文": 100,
            "数学": 90,
            "英语": 95
        },
}
print(my_dict)